<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of persistenciaReclamo
 *
 * @author Agustin
 */
//require_once '../Modelo/persistenciaReclamo.php';

class ControladoraReclamo {

    private static $instance = false;

    public static function getInstance() {
        if (!self::$instance instanceof self) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    public function traerReclamos($id) {
        require_once '../Modelo/persistenciaReclamo.php';
        try {
            return $aux = PersistenciaReclamo::getInstance()->traerReclamos($id);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function traerReclamosEspecialidad($id) {
        require_once 'Modelo/persistenciaReclamo.php';
        try {
            return $aux = PersistenciaReclamo::getInstance()->traerReclamosEspecialidad($id);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function eliminarReclamo($id) {
        require_once 'Modelo/persistenciaReclamo.php';
        try {
            $bool = PersistenciaReclamo::getInstance()->eliminarReclamo($id);
            if ($bool) {
                return 'Eliminado con éxito';
            } else {
                return 'No se ha podido eliminar. Chequear que no haya órdenes que lo utilicen.';
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function actualizarReclamo($datos) {
        require_once 'Modelo/persistenciaReclamo.php';
        try {
            if ($this->cantidadHorasEspec($datos[3]) >= $datos[2]) {
                PersistenciaReclamo::getInstance()->actualizarReclamo($datos);
                return 'Modificado con éxito';
            } else {
                return '<div style="margin-left: -100px">Cantidad de hora sobrepasa los funcionarios disponibles</div>';
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function crearReclamo($datos) {
        require_once 'Modelo/persistenciaReclamo.php';
        $aux = PersistenciaReclamo::getInstance()->buscarReclamo($datos[0]);
        $cant = $this->cantidadHorasEspec($datos[3]);
        try {
            if ($aux[0] == null) {
                if ($cant != 0) {
                    if ($cant > $datos[2]) {
                        PersistenciaReclamo::getInstance()->crearReclamo($datos);
                        return 'Agregado con éxito';
                    } else {
                        return '<div style="margin-left: -100px">Cantidad de horas sobrepasa los funcionarios disponibles</div>';
                    }
                } else {
                    return '<div style="margin-left: -60px">Esta especialidad no tiene funcionarios</div>';
                }
            } else {
                return 'Ya existe ese reclamo';
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    private function cantidadHorasEspec($idespec) {
        require_once 'Modelo/persistenciaFuncionario.php';
        try {
            return PersistenciaFuncionario::getInstance()->traerCantidadHorasFuncionarioEspecialidad($idespec);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

}

?>
